package cfca.paperless.client.servlet._3_assist._3_11_AutoGenerateImage;

import cfca.paperless.client.servlet.PaperlessClient;
import cfca.paperless.client.servlet.PaperlessConfig;
import cfca.paperless.client.util.GUID;
import cfca.paperless.client.util.IoUtil;
import cfca.paperless.client.util.PaperlessUtil;
import cfca.paperless.client.util.StringUtil;

/**
 * @Description 自助生成图片接口，使用示例。
 * 1，使用服务端管理页面上预先制作的印模为模板，一般为圆形。
 * 2，可以添加业务码及指定其样式。
 * 
 * @Author dell
 * @Date 2016-5-16
 * @CodeReviewer TODO
 */
public class AutoGenerateImageTest01 {

    public static void main(String[] args) throws Exception {

        long timeStart = System.currentTimeMillis();// 开始时间

        System.out.println("AutoGenerateImageTest01 START");

        PaperlessClient clientBean = new PaperlessClient(PaperlessConfig.assistUrl, 10000, 60000);// 无纸化辅助接口的访问URL
        
        String sealImageCode = "ym2018052469031847";// 印模编码，或者 印模ID

        String businessCode = "0123456789";// 圆形章时用到，业务码：可以是验证码、查询码等
        String businessCodeStyle = "font-family:宋体,font-size:20;x-ratio:0.2;y-ratio:0.8";// 圆形章时用到，业务码样式。说明：该字段为空时，使用管理页面上设置的“业务码样式”。
        
        String imageStrategyXml = createImageStrategyXml(sealImageCode, businessCode, businessCodeStyle);
        
        System.out.println(imageStrategyXml);

        // 操作员编码或者机构号
        String operatorCode = PaperlessConfig.operatorCode;
        // 渠道编码，可以为空
        String channelCode = PaperlessConfig.channelCode;

        String systemNo = GUID.generateId();//业务流水号 

        // 取得生成的图片文件数据
        byte[] result = clientBean.autoGenerateImage(systemNo, imageStrategyXml, operatorCode, channelCode);

        String errorRsString = PaperlessUtil.isError(result);

        // 处理结果为正常，保存生成的图片文件到本地目录下
        if ("".equals(errorRsString)) {
            System.out.println("AutoGenerateImageTest01 END OK");

            System.out.println(result.length);
            IoUtil.write("./TestData/output/AutoGenerateImageTest01.png", result);

        } else {
            // 处理结果为异常，打印出错误码和错误信息
            System.out.println("AutoGenerateImageTest01 END NG");
            System.out.println(new String(result, "UTF-8"));
        }

        long timeEnd = System.currentTimeMillis();// 结束时间
        System.out.println("##########" + "time used:" + (timeEnd - timeStart) + "##########");
    }

    /**
     * 生成图片生成策略文件
     * 
     * @return
     */
    public static String createImageStrategyXml(String sealImageCode, String businessCode, String businessCodeStyle) {

        StringBuilder imageStrategyXML = new StringBuilder();
        imageStrategyXML.append("<Request>");
        imageStrategyXML.append("<SealImageCode>").append(sealImageCode).append("</SealImageCode>");
        if (StringUtil.isNotEmpty(businessCode)) {
            imageStrategyXML.append("<BusinessCode>").append(businessCode).append("</BusinessCode>");
            imageStrategyXML.append("<BusinessCodeStyle>").append(businessCodeStyle).append("</BusinessCodeStyle>");
        }
        imageStrategyXML.append("</Request>");

        return imageStrategyXML.toString();
    }

}
